Computing systems employ main memory (often referred to as physical memory) to execute processes including software programs or applications. In modern systems, this main memory generally includes volatile memory such as random access memory (RAM). The operating system (OS) may assign to each process a number of pages of memory to use while the process is executing in physical memory. However, active processes may use more physical memory than is available on the system. In such cases, virtual memory may be employed to supplement the physical memory used by active processes, instead of maintaining all of the process pages in physical memory.
Virtual memory may be implemented by writing one or more pages for a process to non-volatile memory in secondary storage (e.g., a hard drive), and reading the pages back into physical memory as needed. For example, when data is not being actively used by a process the pages containing such data may be written to secondary storage thus freeing space in physical memory. This process of reading and writing pages between physical memory and virtual memory is generally referred to as paging, and the space in secondary storage for writing pages is generally referred to as a pagefile. The speed and efficiency at which this paging occurs for a process may impact system performance and user experience.